#include <iostream>
#include <pthread.h>
#include "Sem.hpp"

using namespace SemModule;

Sem sem1(1),sem2(0);

char arr1[5] = "1234"; // 包含'/0'
char arr2[5] = "abcd";

void *Func1(void *arg)
{
    for(const auto& e : arr1)
    {
        sem1.P();
        std::cout << e;
        sem2.V();
    }
    return nullptr;
}

void *Func2(void *arg)
{
    for(const auto& e : arr2)
    {
        sem2.P();
        std::cout << e;
        sem1.V();
    }
    return nullptr;
}

int main()
{
    pthread_t tid1, tid2;

    pthread_create(&tid1, nullptr, Func1, nullptr);
    pthread_create(&tid2, nullptr, Func2, nullptr);

    pthread_join(tid1, nullptr);
    pthread_join(tid2, nullptr);

    std::cout << std::endl;
    
    return 0;
}